// GSAP全局初始化模块
// 确保GSAP和相关插件在整个应用中全局可用

import { gsap } from 'gsap'
import { ScrollTrigger } from 'gsap/ScrollTrigger'
import { SplitText } from 'gsap/SplitText'

// 注册插件
gsap.registerPlugin(ScrollTrigger, SplitText)

// 全局配置ScrollTrigger
ScrollTrigger.config({
  autoRefreshEvents: 'visibilitychange,DOMContentLoaded,load,resize',
})

// 确保在window对象上全局可用
if (typeof window !== 'undefined') {
  // 将GSAP挂载到window对象
  window.gsap = gsap
  window.ScrollTrigger = ScrollTrigger
  window.SplitText = SplitText

  // 添加调试信息
  console.log('🎯 GSAP全局初始化完成:', {
    gsap: !!window.gsap,
    ScrollTrigger: !!window.ScrollTrigger,
    SplitText: !!window.SplitText,
    version: gsap.version,
  })

  // 添加全局事件监听器，确保ScrollTrigger在页面完全加载后刷新
  window.addEventListener('load', () => {
    console.log('📄 页面加载完成，刷新ScrollTrigger')
    ScrollTrigger.refresh()
  })

  // 监听视口变化
  window.addEventListener('resize', () => {
    ScrollTrigger.refresh()
  })
}

// 导出模块
export { gsap, ScrollTrigger, SplitText }

// 创建一个验证函数
export function verifyGSAPGlobal() {
  const checks = {
    gsap: typeof window.gsap !== 'undefined',
    ScrollTrigger: typeof window.ScrollTrigger !== 'undefined',
    SplitText: typeof window.SplitText !== 'undefined',
    registered: window.gsap && window.gsap.plugins && window.gsap.plugins.ScrollTrigger,
  }

  console.log('🔍 GSAP全局状态检查:', checks)

  const allPassed = Object.values(checks).every(Boolean)

  if (allPassed) {
    console.log('✅ GSAP全局验证通过')
  } else {
    console.error('❌ GSAP全局验证失败，尝试修复...')

    // 尝试修复
    if (!checks.gsap) window.gsap = gsap
    if (!checks.ScrollTrigger) window.ScrollTrigger = ScrollTrigger
    if (!checks.SplitText) window.SplitText = SplitText

    console.log('🔧 GSAP全局引用已修复')
  }

  return allPassed
}

export default {
  gsap,
  ScrollTrigger,
  SplitText,
  verifyGSAPGlobal,
}
